In a packet communication network, a packet in transmission may be discarded or disrupted. This is caused by occurrence of congestion or reduction in signal receiver sensitivity in a router or a switch that forwards the packet, external electromagnetic noise, or the like. In general, the packet loss due to the discarding or disrupting is sensed by a protocol operating in an application layer or a transport layer. Then, on the basis of control by the protocol, the lost packet is retransmitted to ensure completeness of the transmission data.
More specifically, a transmitting device transmits a packet to a receiving device, and upon receipt of the packet, the receiving device sends an acknowledgement (ACK: ACKnowledgement) back to the transmitting device. Upon receipt of the acknowledgement, the transmitting device recognizes that the transmitted packet has reached the receiving device without any trouble. On the other hand, if a packet is lost in a network between the transmitting device and the receiving device, the transmitting device fails to receive an acknowledgement responding to the packet. In the case where the transmitting device fails to receive the acknowledgement within a predetermined waiting time after packet transmission, it retransmits the packet to the receiving device. Note that the above predetermined waiting time is referred to as a “retransmission time-out (RTO)”. Also, the transmitting device that performs such packet retransmission control is provided with a memory region for temporarily storing a transmitted packet until it receives the corresponding acknowledgement. The memory region is hereinafter referred to as a “retransmission buffer”.
The TCP (Transmission Control Protocol) used in the Internet is a typical transport layer protocol that performs such packet retransmission control.
A technique related to such packet retransmission control is described in Non-Patent Literature 1. According to the related technique, the packet retransmission control is performed in an MAC (Media Access Control) layer lower than the transport layer. The reason for this is as follows.
As an example, let us consider a network where a round-trip delay time (RTT) is very short, such as a network inside a data center. In such a network, by reducing a retransmission time-out to the order of microseconds, a waiting time for the packet retransmission can be reduced to improve communication efficiency. However, in general, the TCP is implemented in an OS (Operating System), and therefore it is difficult to reduce the retransmission time-out of the TCP to the order of microseconds. For example, accuracy of unit times (Jiffies) in Linux is at most milliseconds, and therefore not sufficient for time measurements in units of microseconds. For this reason, Non-Patent Literature 1 solves such the problem by performing the packet retransmission control in the MAC layer lower than the OS to reduce the retransmission time-out to the order of microseconds.
However, the related technique described in Non-Patent Literature has the following three problems.
A first problem is that a transmitting device does not have a means for detecting whether or not an opposite receiving device has a capability of retransmission control in a layer lower than the transport layer. For example, in a case where the transmitting device has the capability of retransmission control in the lower layer but the opposite receiving device does not have the capability, the receiving device does not send an acknowledgement in the lower layer back to the transmitting device. In this case, the transmitting device fails to receive the acknowledgement no matter how long it waits, so that the transmitting device erroneously recognizes that a packet is discarded on the way, and repeats retransmission in the lower layer. Traffic of such useless retransmission packets squeezes a transmission band, and thereby communication efficiency may be significantly reduced.
A second problem is that the retransmission time-out is constant regardless of a destination. For example, let us consider a case where one transmitting device communicates with two receiving devices “A” and “B”, and round-trip delay times between the transmitting device and the receiving device “A” and between the transmitting device and the receiving device “B” are respectively 50 microseconds and 100 microseconds. In this case, an optimum retransmission time-out for the receiving device “A” is 50 microseconds, and an optimum retransmission time-out for the receiving device “B” is 100 microseconds. However, according to the above-mentioned related technique, the retransmission time-out is constant regardless of a destination, and therefore the retransmission time-out must be set to the longer one, i.e., 100 microseconds. Accordingly, if a packet is discarded between the transmitting device and the receiving device “A”, the packet can be normally retransmitted in 50 microseconds; however, the transmitting device should wait for additional 50 microseconds. Such a redundant waiting time may also deteriorate the communication efficiency.
A third problem is that a transmitting device does not have a means for disabling the retransmission control if the round-trip delay time exceeds an allowable range. For example, let us consider a case where one transmitting device communicates with two receiving devices “A” and “C”, and the round-trip delay times between the transmitting device and the receiving device “A” and between the transmitting device and the receiving device “C” are respectively 50 microseconds and 500 microseconds. Also, it is assumed that the transmitting device has a retransmission buffer that has a memory capacity enough to absorb the round-trip delay time up to 200 microseconds. In this case, the memory capacity of the retransmission buffer is obviously short as compared with the round-trip delay time between the transmitting device and the receiving device “C”. For this reason, a situation may easily occur where the retransmission buffer overflows before the acknowledgement reaches the transmitting device from the receiving device “C” and thus the retransmission control does not work. Since the retransmission buffer is shared by all destinations, the retransmission control fails to work even for traffic to the receiving device “A” that is independent of the receiving device “C”, if the retransmission buffer overflows.